package com.dylon.system.mapper;

import com.dylon.system.domain.SysModule;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 模块表 数据层
 */
@Mapper
public interface SysModuleMapper {

    /**
     * 查询系统模块列表
     * @param module 模块信息
     * @return 模块列表
     */
    public List<SysModule> selectModuleList(SysModule module);

    /**
     * 删除模块管理信息
     * @param moduleId 模块ID
     * @return 结果
     */
    public int deleteModuleById(Long moduleId);

    /**
     * 根据模块ID查询信息
     * @param moduleId 模块ID
     * @return 模块信息
     */
    public SysModule selectModuleById(Long moduleId);

    /**
     * 查询模块数量
     * @param parentId 模块父ID
     * @return 结果
     */
    public int selectCountModuleByParentId(Long parentId);

    /**
     * 查询模块使用数量
     * @param moduleId 模块ID
     * @return 结果
     */
    public int selectUsedCountModuleById(Long moduleId);

    /**
     * 新增模块信息
     * @param module 模块信息
     * @return 结果
     */
    public int insertModule(SysModule module);

    /**
     * 修改模块信息
     * @param module 模块信息
     * @return 结果
     */
    public int updateModule(SysModule module);

    /**
     * 校验模块名称是否唯一
     * @param moduleName 模块名称
     * @param parentId 父模块ID
     * @return 结果
     */
    public SysModule checkModuleNameUnique(@Param("moduleName") String moduleName, @Param("parentId") Long parentId);

}
